package com.mh.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mh.dto.vo.BillFilterVo;
import com.mh.dto.vo.CalendarDayDataOfMonth;
import com.mh.dto.vo.R;
import com.mh.dto.vo.BillShowVo;
import com.mh.pojo.Bill;

import java.util.List;
import java.util.Map;

/**
 * 账单表(Bill)表服务接口
 *
 * @author zmh
 * @since 2025-02-08 09:18:49
 */
public interface BillService extends IService<Bill> {

    /**
     * 分页查询
     *
     * @param page 查询页数
     * @param size 一页显示条数
     * @return ·
     */
    R<Page<Bill>> getAllByPage(int page, int size);

    /**
     * 添加账单
     * @param bill 账单数据
     * @return ·
     */
    R<Boolean> addBill(Bill bill);

    /**
     * 获取账单数据
     * @param showPosition 账单组件位置：index-首页 all_bill：全部账单(过滤项)
     * @param billFilterVo 过滤项DTO -当账单组件显示在首页时all_bill过滤箱参数对象为空
     * @return ·
     */
    R<List<BillShowVo>> getBillData(String showPosition, BillFilterVo billFilterVo);

    /**
     * 获取月份的每天收支情况加入到日期上显示结余
     * @param yearMonth 获取的年月数据
     * @return 包含每日结余的Map（日期字符串 -> 当日累计结余）
     */
    R<Map<String, Double>> getCalendarDayDataOfMonth(String yearMonth);

    /**
     * 根据日期获取当天所有账单
     * @param date 日期
     * @return ·
     */
    R<List<BillShowVo>> getBillByDate(String date);

}

